iT邦幫忙

2026 iThome 鐵人賽

DAY 0
0
AI 自動化

30天,利用 n8n Agents 打造一位 AI 同事系列 第 3

Day 3:n8n Data Tables 教學,先替 AI 同事準備五本工作簿

  • 分享至 

  • xImage
  •  

PM 新同事剛到職,我們需要先向他介紹團隊正在進行的專案,否則他也掌握不了專案進度。

昨天在 Day 2 把環境準備好,今天先別急著按 Create agent。就像新同事第一天上班,我們總不能只給他一台電腦和位子,就叫他報告專案進度吧?

Agent 也一樣,如果沒有拿到公司的專案資料,它只能回答不知道;更糟的情況,是講出一段聽起來很合理、其實沒有根據的內容。

所以在讓 Agent 開口回答之前,我們先用 n8n 的 Data Tables,替這位新同事建好五本工作簿,把交接資料準備好!

Data Tables 是什麼?

n8n 的 Data Tables 是放在 n8n 裡的小型資料表,可以先把它想成幾本共用工作簿:Workflow 可以讀取、寫入或更新資料,下一次執行時,資料也還在。

這裡的 Data Tables 是工作資料,和 Agent 的對話記憶是兩回事;建好表,也不會讓 Agent 自動知道表裡有什麼。後面仍然要做 Workflow Tool,Agent 才能查詢這些資料。我們今天只負責把資料櫃和欄位準備好。

這 30 天會用到五張表:

Data Table 放什麼 今天完成後的筆數
project_status 專案進度、阻塞、風險與下一步 1
project_docs 可搜尋的文件內容與來源網址 1
jira_drafts 等待確認的 Jira 草稿 0
jira_issues 練習用的 Jira 結果,不會連到真的 Jira 0
test_results 後面每次考試的 PASS/FAIL 0

前兩張像新人到職時拿到的交接資料,先各放一筆,讓 Day 6 和 Day 11 有東西可查。後三張則是它開始工作後留下的紀錄,今天先保持空白。

可以先想像之後的工作情境:你問「專案做到哪了?」,它去查 project_status;你要看專案背景,它去找 project_docs。接著你說「幫我擬一張待辦」,內容先放進 jira_drafts,等你核准後,才把模擬建立的結果記在 jira_issues。至於它有沒有照規矩做,就交給 test_results 記錄。

今天先準備這五本工作簿,查詢和寫入的能力會在後面逐步接上。

先準備五個 CSV

我把五份 CSV 完整放在下面,不用另外找下載連結。每份都只有兩行:第一行是欄名,第二行是練習資料。

請用你習慣的純文字編輯器,分別存成下面的檔名,編碼選 UTF-8。只複製區塊內的內容,不要連同 Markdown 的三個反引號一起複製;也確認副檔名是 .csv,不是 .csv.txt。五個檔案放在同一個資料夾就好。

這些都是示範資料。日期保留練習當時的數值,方便和截圖對照;example.com 也是示意網址,並不是一份真的專案文件。先保留這些值,後面的練習才能對得上。

project_status.csv

projectKey,projectName,progress,blocker,riskLevel,nextStep,owner,statusUpdatedAt
AI,AI 同事計畫,35,等待確認模型 credential,medium,完成第一個查詢 Tool,Andy,2026-08-20T09:00:00+08:00

project_docs.csv

sourceId,projectKey,title,content,sourceUrl
DOC-001,AI,AI 同事專案說明,本週完成 self-hosted n8n 與五張練習資料表,https://example.com/docs/ai-project

jira_drafts.csv

draftId,projectKey,summary,description,acceptanceCriteria,payloadHash,status,draftCreatedAt
DRAFT-SEED,AI,這是一筆建表用範例,建立欄位型別後會刪除,不會真的建立 Jira,seed,seed,2026-08-20T09:00:00+08:00

jira_issues.csv

issueKey,draftId,idempotencyKey,summary,status,issueCreatedAt
ISSUE-SEED,DRAFT-SEED,seed,這是一筆建表用範例,seed,2026-08-20T09:00:00+08:00

test_results.csv

testId,testName,input,expected,actual,passed,runAt
TEST-SEED,建表型別檢查,seed,Boolean 欄位應為 true,尚未執行,true,2026-08-20T09:00:00+08:00

progress35 在這份資料裡代表 35%,不是 0.35。最後三份 CSV 裡的 SEED 則是建表用的臨時範例,等一下會刪掉。

建立第一張 project_status

打開 Day 2 準備好的那套 n8n,進入 Personal(或你用來練習的專案),打開上方的 Data tables 分頁,按右上角 Create data table

五張表和後續的 Workflow 都要放在同一個 n8n 專案,就像交接資料要放在同一個團隊的資料夾,才不會人坐在 A 辦公室,資料卻全放在 B 辦公室。

下面截圖使用本系列實測的 n8n 2.35.3。不同版本的按鈕位置或 CSV 型別推斷可能有差異;重點是最後建出的表名、欄位和型別要一致。

接著照下面填:

  1. Data table name 輸入 project_status
  2. 選擇 Import CSV
  3. 上傳剛才存好的 project_status.csv
  4. 保持 My CSV file contains a header row 勾選
  5. Create

輸入 project_status,選擇 Import CSV 並上傳同名檔案

表名用 project_status,不要加 .csv;header 選項要勾選,第一行才會被當成欄名。

按下 Create 後,n8n 不會立刻建表,而是先讓我們檢查欄位。請特別確認:

  • progressNumber
  • statusUpdatedAtDatetime
  • 其他欄位是 String

n8n 依 CSV 內容判斷 progress 為 Number、statusUpdatedAt 為 Datetime

欄位型別會影響後面的比較與排序;進度如果被存成文字,100 甚至可能排在 35 前面。

確認後再按一次 Create。在這版介面裡,n8n 會自動增加 id,所以 CSV 雖然只有 8 欄,清單上會看到 9 columns,這是正常的。

我真的遇到的保留字問題

我第一次把時間欄叫做 updatedAt,建立時才看到「reserved column」錯誤,原來這是 n8n 自己保留的欄名,不能拿來當自訂欄位。

上面的 CSV 已經改成 statusUpdatedAt。如果你是自己建立 CSV,也請避開 idcreatedAtupdatedAt 這幾個名稱。

再建立 project_docs

回到 Data tables,用同樣的方法建立 project_docs,並上傳 project_docs.csv。建立完成後打開它,應該會看到 DOC-001 這一列:

project_docs 已匯入 DOC-001 練習文件

先確認 DOC-001 和文件內容已匯入;往右捲動可以檢查 sourceUrl 欄位。

新同事跟你說「文件上是這樣寫的」,你大概會接著問:「哪一份?給我看一下。」sourceId 就是文件編號,sourceUrl 則是回頭找文件的地址,讓回答有地方可以追查。

Day 12 會用這類欄位檢查回答有沒有附上來源。但附了網址,還不代表連結打得開,更不代表文件真的支持那個答案。這裡的 example.com 只是練習用,不能拿它當成已驗證的引用。

project_statusproject_docs 的這一筆資料都要保留,不要刪除。

建立三張空表

剩下三個 CSV 也各有一筆 SEED 資料,就像表單上預先填好的「填寫範例」:先讓系統看懂每個欄位要放什麼,再把這筆範例拿掉。

我在這次使用的 n8n 2.35.3 匯入介面裡,遇到只有欄名、沒有資料列時,欄位被當成 String 的情況。為了讓 passed 是真正的 Boolean、時間欄是 Datetime,這次採用的做法是:先用範例列建表,確認型別,再把範例列刪掉。

依序建立:

  1. jira_drafts,上傳 jira_drafts.csv
  2. jira_issues,上傳 jira_issues.csv
  3. test_results,上傳 test_results.csv

jira_drafts,確認 draftCreatedAtDatetime;在 jira_issues,確認 issueCreatedAtDatetime。這兩張表的其他自訂欄位都是 String

project_docs 的五個自訂欄位也都是 String。到了 test_results,請特別確認下面三個欄位,其餘欄位維持 String

  • actualString,後面要保存 Agent 的實際回答
  • passedBoolean,只保存 true 或 false
  • runAtDatetime,記錄測試時間

test_results 的 actual、passed 與 runAt 型別已正確辨識

我一開始把範例的 actual 也寫成 true,結果它被誤判成 Boolean;畫面中的 String/Boolean/Datetime 才是我們要的結果。

舉例來說,之後我們出一題「專案進度多少?」,expected 可以記預期的「35%」,actual 記 Agent 實際說了什麼,passed 則依測試規則記下有沒有過關。就像考卷要分開放「標準答案、學生作答、判分結果」,不能只留一句「它說得很好」。今天還沒開始考試,所以這張表最後要清空。

這三張表建立後,分別找到 DRAFT-SEEDISSUE-SEEDTEST-SEED 那一列,勾選後按 Delete,再在確認視窗按一次 Delete。只刪這三筆建表範例,前兩張表的專案與文件資料要留下來。完成後,jira_draftsjira_issuestest_results 都應該顯示 Total 0

最後核對五張表

回到 Data tables 清單,名稱應該一個不少:

Data Tables 清單已出現五張練習表

右下角 Total 5 是「五張表」,不是五筆資料;這版清單上的欄位數也包含自動加入的 id

最後再打開 jira_issues

jira_issues 顯示 No rows 與 Total 0

先記住現在的 Total 0。到了人工核准的練習,我們會在執行前後比對這張表:如果你還沒核准,卻多出一筆新的結果,就要檢查是哪個步驟先動了手。

花兩分鐘,確認今天真的有完成

先逐張打開,確認資料筆數依序是 1、1、0、0、0,再用人的眼睛查一次 project_status

問:AI 同事計畫目前進度多少?卡在哪裡?

從這筆資料能讀到:進度 35%,目前等待確認模型 credential,下一步是完成第一個查詢 Tool。

這是我們手動讀表得到的答案,先用它確認「正確答案應該長什麼樣子」,之後才有辦法檢查 Agent 有沒有亂講;目前還不能算是 Agent 已經查詢成功。

再看一下 project_docs:你能找到 DOC-001,也知道它的示意網址不能拿來證明真實文件存在。這樣就過關了。

資料櫃準備好,Agent 就會用了嗎?

還沒,光有資料,Agent 並不會自動知道怎麼用。就像新同事收到一份沒看過的報表,你還是得告訴他:這份資料代表什麼、去哪裡查、什麼時候該用。

先把三件東西分清楚:project_status 是專案工作簿,Session 是這次對話的紀錄,credential 則像連線時要出示的識別證。

例如你在聊天裡說「剛開完會,進度改成 50%,先記著」,即使這句話還在對話裡,表中的 progress 也不會因此從 35 自動變成 50,還得透過寫入流程才能修改工作簿。就像你口頭跟 PM 說了新進度,共用報表也不會自己更新。

後面我們會把查詢流程做成 Workflow Tool,也就是 Agent 可以呼叫的工作流程。你可以把它想成一個「查專案進度」的工具:告訴它要查哪個專案,它就照設定好的步驟去翻工作簿。

等我們把它接好,預期的過程會像這樣:

  1. 你問:「AI 同事計畫做到哪了?」
  2. Agent 選擇查詢 Tool,帶入這個專案的代號 AI
  3. Workflow 用 projectKey = AI 查表,取回 progress = 35,以及阻塞、下一步等欄位。
  4. Agent 再整理成:「目前進度 35%,卡在模型 credential 尚未確認,下一步是完成第一個查詢 Tool。」

這裡的 35% 是從表裡查回來的,Agent 負責判斷何時使用工具,並把查到的結果說清楚,而不是自己決定一個看起來合理的百分比。這條查詢流程還沒在今天建立,先把它當成我們後面要完成的目標。

目前先約定:project_status 由維護者更新,後面的查詢 Tool 只讀取。新人拿到「查資料」的工具,不代表順便拿到了「改資料」的權限。

還有一個之後會遇到的小陷阱:如果同一個 projectKey = AI 出現兩筆資料,一筆進度 35%,另一筆 80%,該信哪一筆?本文沒有替 projectKey 建立唯一限制,所以查詢流程要處理這種情況,不能隨便拿第一筆就當答案。今天先保留一筆 AI,等接上 Tool 再測。

今天完成的成果,就是五張型別正確、資料筆數正確的工作簿。交接資料準備好了,下一篇我們再替這位 AI 同事選模型,並把「能做什麼、什麼事要先問過你」寫進工作規則(Instructions)。

參考:n8n 官方 Data tables 文件


上一篇
Day 2:n8n Agents 自架教學,用 Docker 準備 AI Agent 練習環境
下一篇
Day 4:n8n AI Agent 教學,建立第一位 AI 同事並寫下工作規則
系列文
30天,利用 n8n Agents 打造一位 AI 同事6
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言